// * 动态导入：可以动态设置导入的模块，和根据条件在运行时导入。

// * import() 表达式

// 例子：
let modulePath = './index.js'

import(modulePath)
	.then((obj) => {
		console.log(obj) // 模块对象
	})
	.catch((err) => {
		console.error(err) // 错误
	})

// 异步函数中使用例子：
async function importFun(path) {
	try {
		let { sayHi, sayBye, default: say } = await import(path)

		sayHi('Ben')
		sayBye('Ben')
		say('Ben') // 默认导出的函数
	} catch (error) {
		console.error(error)
	}
}

// * 动态导入在常规脚本中工作时，它们不需要 script type="module"。

// * 注意：
// * 尽管 import() 看起来像一个函数调用，但它只是一种特殊语法，只是恰好使用了括号（类似于 super()）。
// * 因此，我们不能将 import 复制到一个变量中，或者对其使用 call/apply。因为它不是一个函数。
